<template>
    <view class="content">
		<!-- 这是一个pda广播扫描插件,引用他!按下pda的SCAN扫描,引用此页面则会监听到 -->
	</view>
</template>
  <!--
   关键代码  https://juejin.cn/post/6994792411033501710
   
   // 其中的'nlscan.action.SCANNER_RESULT'是需要和你设备中广播的action一致
   this.intentFilter.addAction('nlscan.action.SCANNER_RESULT')
   
   // 其中的 'SCAN_BARCODE1'和action一样的方式，需要和广播中配置的Extra一致
   let content = intent.getStringExtra('SCAN_BARCODE1'); -->

<script>
export default {
    data() {
        return {
            activity: null,
            receiver: null,
            intentFilter: null
        }
    },
    created: function(option) {
        this.initScan()
        this.startScan();
    },
    onHide: function() {
        this.stopScan();
    },
    destroyed: function() {
        //页面退出时一定要卸载监听,否则下次进来时会重复，造成扫一次出2个以上的结果/
        this.stopScan();
    },
    methods: {
        initScan() {
            let _this = this;
            this.activity = plus.android.runtimeMainActivity(); //获取activity
            var IntentFilter = plus.android.importClass('android.content.IntentFilter');
            this.intentFilter = new IntentFilter();
            // 其中的'nlscan.action.SCANNER_RESULT'是需要和你设备中广播的action一致
            this.intentFilter.addAction('nlscan.action.SCANNER_RESULT')
            this.receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
                onReceive: function(context, intent) {
                    console.log("intent",intent)
                    plus.android.importClass(intent);
                    // 其中的 'SCAN_BARCODE1'和action一样的方式，需要和广播中配置的Extra一致
                    let content = intent.getStringExtra('SCAN_BARCODE1'); 
                    uni.$emit('scancodedate', content)
                }
            });
        },
        startScan() {
            this.activity.registerReceiver(this.receiver, this.intentFilter);
        },
        stopScan() {
            this.activity.unregisterReceiver(this.receiver);
        }
    }
}
</script>
